﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using service_desk_blred.Models;
using System.Web.UI.WebControls;
using service_desk_blred.Utils;
using System.Web.UI;
using System.Web.Security;

namespace service_desk_blred.Controllers
{
    public class ChamadoController : Controller
    {

        public ChamadoController()
        {
            service = new ChamadoService();
        }


        ChamadoService service;

        //
        // GET: /Chamado/

        public ActionResult Index()
        {
            return View();

        }

        //
        // GET: /Chamado/EscolheCategoria

        public ActionResult EscolheCategoria()
        {
            CliassificacaoModel model = new CliassificacaoModel();

            ResponseInfo response = service.RecuperarTodasClassificacoes();

            CliassificacaoModel classModel = (CliassificacaoModel)Session["classificacao"];


            if (response.isSuccess())
            {

                if (classModel != null)
                {
                    model.ListaClassificacao = new List<SelectListItem>();

                    foreach (CliassificacaoModel item in (List<CliassificacaoModel>)response.objResponse)
                    {

                        if (item.IdPaiClassificacao == classModel.IdClassificacao)
                        {
                            model.ListaClassificacao.Add(new SelectListItem { Text = item.NomeClassificao, Value = item.IdClassificacao.ToString() });
                        }
                    }

                }
                else
                {
                    UsuarioModel user = (UsuarioModel)Session["USUARIO_LOGADO"];

                    model.ListaClassificacao = new List<SelectListItem>();

                    foreach (CliassificacaoModel item in (List<CliassificacaoModel>)response.objResponse)
                    {

                        if (item.IdPaiClassificacao == 0)
                        {
                            if (item.NomeClassificao.Equals("Compras"))
                            {
                                if (user.GrupoUsuario.IdGrupo == 5)
                                {
                                    model.ListaClassificacao.Add(new SelectListItem { Text = item.NomeClassificao, Value = item.IdClassificacao.ToString() });
                                }
                            }
                            else
                            {
                                model.ListaClassificacao.Add(new SelectListItem { Text = item.NomeClassificao, Value = item.IdClassificacao.ToString() });
                            }

                        }
                    }

                }

            }


            return View(model);
        }

        public bool ValidarCategoria(int id)
        {

            ResponseInfo response = service.recuperarClassificacaoPorId(id);
            CliassificacaoModel model = (CliassificacaoModel)response.objResponse;
            Session["classificacao"] = model;
            if (model.PermiteVinculo)
            {
                return true;
            }
            else
            {
                return false;
            }

        }
        [HttpPost]
        public ActionResult EscolheCategoria(CliassificacaoModel model)
        {

            if (model.IdClassificacao != null)
            {

                if (ValidarCategoria(model.IdClassificacao))
                {
                    return RedirectToAction("AbrirChamado", "Chamado");
                }
                else
                {
                    return View();
                }
            }
            else
            {

                ModelState.AddModelError("", "Tipo de Chamado Inválido");
                return RedirectToAction("EscolheCategoria", "Chamado");
            }

        }

        //
        // GET: /Chamado/EscolheCategoria

        public ActionResult AbrirChamado()
        {

            ChamadoModel model = new ChamadoModel();
            CliassificacaoModel classificacao = (CliassificacaoModel)Session["classificacao"];
            Session["classificacao"] = null;
            UsuarioModel usuario = new UsuarioModel();
            usuario.IdUsuario = 1;
            usuario.NomeUsuario = "Paulo Henrique";


            model.ListaSolicitantes = new List<SelectListItem>();
            model.ListaSolicitantes.Add(new SelectListItem { Text = "Paulo", Value = "1", Selected = true });
            model.ListaSolicitantes.Add(new SelectListItem { Text = "Bruno", Value = "2" });
            model.ListaSolicitantes.Add(new SelectListItem { Text = "Daiane", Value = "3" });

            model.Classificacao = classificacao;
            model.UsuarioAbertura = usuario;


            return View(model);
        }
        [HttpPost]
        public ActionResult AbrirChamado(ChamadoModel model)
        {

            model.DataAbertura = DateTime.Today;
            model.IdChamado = 2013001;

            Session["chamado"] = model;

            return RedirectToAction("SucessoAbertura", "Chamado");

        }

        //
        // GET: /Chamado/EscolheCategoria

        public ActionResult SucessoAbertura()
        {
            return View((ChamadoModel)Session["chamado"]);

        }

        //
        // GET: /Chamado/AcompanharChamado

        public ActionResult AcompanharChamado()
        {
            return View();
        }

        //
        // GET: /Chamado/HistoricoChamado

        public ActionResult HistoricoChamado()
        {
            return View();
        }

        //
        // GET: /Chamado/ChamadoAberto

        public ActionResult ChamadoAberto()
        {
            return View();
        }

        //
        // GET: /Chamado/RelatorioChamado

        public ActionResult ChamadoAtendimento()
        {
            return View();
        }


        //
        // GET: /Chamado/RelatorioChamado

        public ActionResult CompraPendente()
        {
            return View();
        }


        //
        // GET: /Chamado/RelatorioChamado

        public ActionResult RelatorioChamado()
        {
            return View();
        }


    }
}
